﻿using System;
using System.Collections.Generic;
using System.ServiceModel;
using WickedSick.CommonComponents.Music;

namespace WickedSick.ServerComponents.Music
{
    [ServiceContract]
    public interface ISDBService
    {
        [OperationContract]
        ChunkData<SongData> RequestAllSongs();

        [OperationContract]
        ChunkData<SongData> RequestNextSongChunk(int ChunkNumber);

        [OperationContract]
        ChunkData<AlbumData> RequestAllAlbums();

        [OperationContract]
        ChunkData<AlbumData> RequestNextAlbumChunk(int ChunkNumber);

        [OperationContract]
        ChunkData<ArtistData> RequestAllArtists();

        [OperationContract]
        ChunkData<ArtistData> RequestNextArtistChunk(int ChunkNumber);

        [OperationContract]
        ChunkData<AuditData> RequestChanges(DateTime LastUpdate);

        [OperationContract]
        ChunkData<AuditData> RequestNextChangesChunk(Guid id, int ChunkNumber);

        [OperationContract]
        ChunkData<PlaylistData> RequestAllPlaylists(int MemberID);

        [OperationContract]
        ChunkData<PlaylistData> RequestNextPlaylistChunk(Guid id, int ChunkNumber);

        [OperationContract]
        List<int> RequestLibraryIDs(int MemberID);

        [OperationContract]
        Guid AuthenticateMember(string Login, string Password);

        [OperationContract]
        bool LogoffMember(Guid id);

        [OperationContract]
        bool MoveSongToLibrary(Guid id, int SongID);

        [OperationContract]
        bool MoveSongToArchive(Guid id, int SongID);

        [OperationContract]
        bool InitiateUploadedSong(Guid id, SongData newSong);

        [OperationContract]
        bool DeletePlaylist(Guid id, int PlaylistID, DateTime TimeAffected);
    }
}